package org.jeecg.modules.wlhy.utils;

import cn.hutool.core.util.StrUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

@Component
public class DataMaskingUtil {

    public static String phoneMasking(String phone) {
        if (StrUtil.isEmpty(phone)) {
            return StrUtil.EMPTY;
        }

        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }


    public static String idcardMasking(String idcard) {
        if (StrUtil.isEmpty(idcard)) {
            return StrUtil.EMPTY;
        }

        return idcard.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
    }

    /**
     * [银行卡号] 前六位，后四位，其他用星号隐藏每位1个星号<例子:6222600**********1234>
     *
     * @param cardNum
     * @return
     */
    public static String bankNumberMasking(String cardNum) {
        if (StrUtil.isEmpty(cardNum)) {
            return StrUtil.EMPTY;
        }

        return StringUtils.left(cardNum, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(cardNum, 4), StringUtils.length(cardNum), "*"), "******"));
    }

    /**
     * [中文姓名] 只显示第一个汉字，其他隐藏为星号<例子：李**>
     *
     * @param fullName 姓名
     * @return
     */
    public static String chineseNameMasking(String fullName) {
        if (StrUtil.isEmpty(fullName)) {
            return StrUtil.EMPTY;
        }

        String name = StringUtils.left(fullName, 1);
        return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
    }

}
